let queue=[];
let callback=[];
let state={count:0}
function setState(newState,callback){
    queue.push(newState)
    callback.push(callback)
}
function handleClick(){
    setState((state)=>{count:state.count+1},()=>{
        //此回调是在状态变更之后执行
        console.log('callback1',state.count);
    })
    setState((state)=>{count:state.count+1},()=>{
        //此回调是在状态变更之后执行
        console.log('callback2',state.count);
    })
}
handleClick();
queue.forEach((newState)=>{
    //其实在状态计算时，对新旧状态属性会进行合并操作
    //如果此状态新老都有，则覆盖，如果新的有老的没有，则添加，如果新的没有，老的有，则不变
    //从此角度来说，无法真正删除state中的属性，只能把它设置为null值
    if(typeof newState==='function'){
        //调用此计算函数，并且传入老状态，计算出新状态
        newState=newState(state)
    }
    //在合并老的和新的状态
    state={...state,...newState}
})
callback.forEach(callback=>callback())
console.log(state);